﻿// 这段 MFC 示例源代码演示如何使用 MFC Microsoft Office Fluent 用户界面
// (“Fluent UI”)。该示例仅供参考，
// 用以补充《Microsoft 基础类参考》和
// MFC C++ 库软件随附的相关电子文档。
// 复制、使用或分发 Fluent UI 的许可条款是单独提供的。
// 若要了解有关 Fluent UI 许可计划的详细信息，请访问
// https://go.microsoft.com/fwlink/?LinkId=238214.
//
// 版权所有(C) Microsoft Corporation
// 保留所有权利。

#pragma once

class CellRichEditToolBar : public CMFCToolBar
{
public:
	virtual void OnUpdateCmdUI(CFrameWnd* /*pTarget*/, BOOL bDisableIfNoHndler)
	{
		CMFCToolBar::OnUpdateCmdUI((CFrameWnd*) GetOwner(), bDisableIfNoHndler);
	}

	virtual BOOL AllowShowOnList() const { return FALSE; }
};

class CellRichEdit : public CDockablePane
{
public:
	CellRichEdit() noexcept;
	virtual ~CellRichEdit();

	void AdjustLayout();
public:

protected:
	CellRichEditToolBar m_wndToolBar;
	CRichEditCtrl m_wndRichEdit;

	// 重写
public:
	virtual BOOL PreTranslateMessage(MSG* pMsg);

public:
	bool m_changed = false;

protected:
	afx_msg void OnRichEditChange();
	afx_msg void OnUpdateRichOK(CCmdUI *pCmdUI);
	afx_msg int  OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
	afx_msg void OnCopy() { m_wndRichEdit.Copy(); }
	afx_msg void OnCut() { m_wndRichEdit.Cut(); }
	afx_msg void OnPaste() { m_wndRichEdit.Paste(); }
	afx_msg void OnSelectall() { m_wndRichEdit.SetSel(0, -1); }
	afx_msg void OnUndo() { m_wndRichEdit.Undo(); }
	afx_msg void OnClear() { m_wndRichEdit.SetSel(0, -1); m_wndRichEdit.Clear(); }
	DECLARE_MESSAGE_MAP()
};